




function dataGrid(tabId){
    this.tabId=tabId;
    var _tabId=this.tabId+"_table";
    var tabOjb=$('#'+this.tabId);
    tabOjb.append( '<table class="layui-hide" id="'+tabId+'_table" lay-filter="'+tabId+'_table"></table>' );//添加table
    var $table=$("#"+_tabId);

    this.load=function(where, field, checked){
        //加载表头
        var columns=[];
        var index=0;
        if(tabOjb.attr("multiSelect")=="true"){
            columns[0]={type:'checkbox',fixed: 'left'};
            index=1;
        }else if(tabOjb.attr("singleSelect")=="true"){
            columns[0]={type:'radio',fixed: 'left'};
            index=1;
        }

        tabOjb.children("div").children("div").each(function(){
            var field=$(this).attr("field")
            var tempColumn;
            if(field){
                tempColumn= {"field": $(this).attr("field"),
                    "title": $(this).text()
                };
                if($(this).attr("edit")){
                    tempColumn.edit=$(this).attr("edit");
                }

                if($(this).attr("visible")) {//时间格式化
                    tempColumn.hide=$(this).attr("visible")=="true" ? false : true;
                }else{
                    tempColumn.hide=false;
                }
                if($(this).attr("width") && $(this).attr("width")){
                    //var width=$(this).attr("width").replace("%","");
                    tempColumn.width=$(this).attr("width");
                }
                if($(this).attr("renderer")){
                    var fun=$(this).attr("renderer");
                    tempColumn.templet=function(d){
                        //return rowFormat (d[field],d,fun);
                        var cdata={"value" : d[field],"record" : d};
                        return eval(fun+'('+JSON.stringify(cdata).replace(/\'/g, "&apos;").replace(/\"/g,"'")+');');
                    }
                }

                if($(this).attr("dateFormat")){//时间格式化
                    var foramType=$(this).attr("dateFormat")
                    tempColumn.templet=function(d){
                        var data=d[$(this).attr("field")]
                        if(data && data!=""){
                            var date=new Date(data).format(foramType);
                            return date;
                        }else{
                            return "";
                        }
                    }
                }

                if($(this).attr("dataFormat")){//数据格式化
                    var foramt=eval("(" + $(this).attr("dataFormat") + ")");
                    tempColumn.templet=function(d){
                        var data=d[$(this).attr("field")]
                        if(data===null || data===""){
                            return "";
                        }else{
                            return foramt[data];
                        }
                    }
                }

                if($(this).attr("fixed")){//固定列
                    tempColumn.fixed=$(this).attr("fixed");
                }

                if ($(this).attr("align")) {//对齐方式
                    tempColumn.align=$(this).attr("align");
                }

                if ($(this).attr("totalRow")) {//合计
                    tempColumn.totalRow=$(this).attr("totalRow");
                }

                if ($(this).attr("totalRowText")) {//合计
                    tempColumn.totalRowText=$(this).attr("totalRowText");
                }

            }else if($(this).attr("type") && $(this).attr("type")=="indexcolumn"){
                tempColumn={type:'numbers',"title": $(this).text(),fixed: 'left'}
            }
            columns[index]=tempColumn;
            index++;
        });
        //console.log(JSON.stringify(columns))
        //加载表头结束

        /*加载数据*/
        layui.extend().use(['table','jquery','layer'], function(){
            table = layui.table
                ,admin = layui.admin;
            var limit=tabOjb.attr("pageSize")==null || tabOjb.attr("pageSize")==''|| tabOjb.attr("pageSize")==undefined ? 10 : tabOjb.attr("pageSize");
            var even=tabOjb.attr("even")==null || tabOjb.attr("even")==''|| tabOjb.attr("pageSize")==undefined ? true : false;
            var height=tabOjb.attr("height")==null || tabOjb.attr("height")==''|| tabOjb.attr("height")==undefined ? "full-180"  : tabOjb.attr("height");
            var limits=[10,20,30,50,80,100];
            var page = (tabOjb.attr("page") == 'false') ? false :true;
            if(tabOjb.attr("sizeList") && tabOjb.attr("sizeList")!=''){
                var size=tabOjb.attr("sizeList");
                size=size.substring(1,size.length-1);
                var limitsStr=size.split(",");
                var tempLimit=parseInt(limit);
                limits=[tempLimit]
                for (var a=0;a<limitsStr.length;a++){
                    var temp=parseInt(limitsStr[a]);
                    if(temp>tempLimit){
                        limits.push(temp);
                    }
                }
            }
            var method = (tabOjb.attr("method") == '' || tabOjb.attr("method") == undefined) ? "post" :tabOjb.attr("method");
            var totalRow = (tabOjb.attr("totalRow") == '' || tabOjb.attr("totalRow") == undefined) ? false :tabOjb.attr("totalRow");
            table.render({//加载数据
                elem: $table//对象
                ,url: tabOjb.attr("url")//数据地址
                ,cols: [columns]//表头
                ,page: page//是否显示分页
                ,method: method
                ,height : height
                ,cellMinWidth: 100//最小列宽
                ,limits: limits//每页条数的选择项，默认：[10,20,30,50,80,100]。
                ,even : even//隔行变色
                ,limit : limit//每页显示的条数（默认：10）
                ,totalRow: totalRow
                ,request: {
                    limitName: 'limit' //每页数据量的参数名，默认：limit
                }
                ,response: {
                    countName: 'total' //规定数据总数的字段名称，默认：count
                    ,dataName: 'rows' //规定数据列表的字段名称，默认：data
                    ,statusCode: 200 //规定成功的状态码，默认：0
                }
                ,text: {
                    none: '暂无相关数据' //默认：无数据。注：该属性为 layui 2.2.5 开始新增
                }
                ,where : where
                ,parseData: function(res){
                    if(checked != "" && checked != undefined){
                        var checkeds = checked.split(',');
                        res.rows.forEach(function (item, index) {
                            for(var i = 0; i < checkeds.length; i++){
                                if(item[field] == checkeds[i]){
                                    res.rows[index].LAY_CHECKED = true;
                                }
                            }
                        })
                    }

                    return res;
                }
            });

            if(tabOjb.attr("onrowdblclick") && tabOjb.attr("onrowdblclick")!=''){
                //监听行双击事件
                table.on('rowDouble('+_tabId+')', function(obj){
                    eval(tabOjb.attr("onrowdblclick")+'('+JSON.stringify(obj.data).replace(/\"/g,"'")+');');
                });
            }
            if(tabOjb.attr("onrowclick") && tabOjb.attr("onrowclick")!=''){

                //监听行单击事件
                table.on('row('+_tabId+')', function(obj){
                    /*console.log(obj.tr) //得到当前行元素对象
                    console.log(obj.data) //得到当前行数据*/
                    eval(tabOjb.attr("onrowclick")+'('+JSON.stringify(obj.data).replace(/\"/g,"'")+');');
                    //obj.del(); //删除当前行
                    //obj.update(fields) //修改当前行数据
                });
            }

            if(tabOjb.attr("rowEditFunction") && tabOjb.attr("rowEditFunction")!=""){
                //监听行单击事件
                table.on('edit('+_tabId+')', function(obj){
                    eval(tabOjb.attr("rowEditFunction")+'('+JSON.stringify(obj).replace(/\"/g,"'")+');');
                });
            }
            if(tabOjb.attr("checkboxFunction") && tabOjb.attr("checkboxFunction")!="") {
                //监听表格复选框选择
                table.on('checkbox('+_tabId+')', function (obj) {
                    var data = table.checkStatus(_tabId);
                    eval(tabOjb.attr("checkboxFunction")+('('+JSON.stringify(data).replace(/\"/g,"'")+','+JSON.stringify(obj).replace(/\"/g,"'")+');'));
                });
            }
        });



        /*加载数据结束*/
        this.getCheckData= function(){ //获取选中数据
            var checkStatus = table.checkStatus(_tabId)
                ,data = checkStatus.data;
            return JSON.stringify(data);
        }

        this.getAllData=function(){ //获取所有行数据
            var data = table.cache[_tabId]
            return JSON.stringify(data);
        },

        this.checkAllselect = function(){//验证是否全选
            var checkStatus = table.checkStatus(_tabId);
            return checkStatus.isAll ? true: false
        }

        this.getCheckLength =function(){//获取选中数目
            var checkStatus = table.checkStatus(_tabId)
                ,data = checkStatus.data;
            return data.length;
        }

        this.reload =function(where,pg, checked){//数据重载
            var page = (tabOjb.attr("page") == 'false') ? false :true;
            if(page){
                if(!pg || pg==''){
                    page = {curr: 1}
                }else{
                    page = {curr: pg}
                }
            }

            table.reload(_tabId, {
                url: tabOjb.attr("url")//数据地址
                ,where: where //设定异步数据接口的额外参数
                ,page: page//重新从第 1 页开始
                ,parseData: function(res){
                    if(checked != "" && checked != undefined){
                        var checkeds = checked.split(',');
                        res.rows.forEach(function (item, index) {
                            for(var i = 0; i < checkeds.length; i++){
                                if(item.id == checkeds[i]){
                                    res.rows[index].LAY_CHECKED = true;
                                }
                            }
                        })
                    }

                    return res;
                }
            });
        }
    }

}

/*dataGrid={
    init : function(tabId){
        tabOjb=$('#'+tabId);
        tabOjb.append( '<table class="layui-hide" id="'+tabId+'_table"></table>' );//添加table
        $table=$("#"+tabId+"_table");
        _tabId=tabId+"_table";
        return this;
    },

    TableTitle : function (){
        var columns=[];
        var index=0;
        if(tabOjb.attr("multiSelect")=="true"){
            columns[0]={type:'checkbox'};
            index=1;
        }
        tabOjb.children("div").children("div").each(function(){
            var field=$(this).attr("field")
            var tempColumn;
            if(field){
                tempColumn= {"field": $(this).attr("field"),
                    "title": $(this).text()
                };
                if($(this).attr("allowSort")) {//时间格式化
                    tempColumn.hide=$(this).attr("allowSort")=="true" ? false : true;
                }
                if($(this).attr("width") && $(this).attr("width")){
                    //var width=$(this).attr("width").replace("%","");
                    tempColumn.width=$(this).attr("width");
                }
                if($(this).attr("renderer")){
                    var fun=$(this).attr("renderer");
                    tempColumn.templet=function(d){
                        return rowFormat (d[field],d,fun);
                    }
                }

                if($(this).attr("dateFormat")){//时间格式化
                    var foramType=$(this).attr("dateFormat")
                    tempColumn.templet=function(d){
                        var data=d[$(this).attr("field")]
                        if(data && data!=""){
                            var date=new Date(data).format(foramType);
                            return date;
                        }else{
                            return "";
                        }
                    }
                }

            }else if($(this).attr("type") && $(this).attr("type")=="indexcolumn"){
                tempColumn={type:'numbers',"title": $(this).text()}
            }
            columns[index]=tempColumn;
            index++;
        });
        return columns;
    },

    getCheckData: function(){ //获取选中数据
        var checkStatus = table.checkStatus(_tabId)
            ,data = checkStatus.data;
        return JSON.stringify(data);
    },

    getAllData: function(){ //获取所有行数据
        var data = table.cache[_tabId]
        return JSON.stringify(data);
    },

    checkAllselect : function(){//验证是否全选
        var checkStatus = table.checkStatus(_tabId);
        return checkStatus.isAll ? true: false
    },

    getCheckLength : function(){//获取选中数目
        var checkStatus = table.checkStatus(_tabId)
            ,data = checkStatus.data;
        return data.length;
    },


    load : function(where){
        /!*var pathName = window.document.location.pathname;
        console.log(pathName)
        var projectName = pathName.substring(0, pathName.substr(1).indexOf('/') + 1);
        console.log(projectName)*!/
        layui.extend().use(['table','jquery','layer'], function(){
                 table = layui.table
                ,admin = layui.admin;
                 var limit=tabOjb.attr("pageSize")==null || tabOjb.attr("pageSize")==''|| tabOjb.attr("pageSize")==undefined ? 10 : tabOjb.attr("pageSize");
                 var even=tabOjb.attr("even")==null || tabOjb.attr("even")==''|| tabOjb.attr("pageSize")==undefined ? true : false;
                var height=tabOjb.attr("height")==null || tabOjb.attr("height")==''|| tabOjb.attr("height")==undefined ? "full-180"  : tabOjb.attr("height");
                 var limits=[10,20,30,40,50,60,70,80,90];
                 if(tabOjb.attr("sizeList") && tabOjb.attr("sizeList")!=''){
                     var size=tabOjb.attr("sizeList");
                     size=size.substring(1,size.length-1);
                     try
                     {
                         limits=size.split(",");
                     }
                     catch(err)
                     {

                     }
                 }
            table.render({//加载数据
                elem: $table//对象
                ,url: tabOjb.attr("url")//数据地址
                ,cols: [dataGrid.TableTitle()]//表头
                ,page: true//是否显示分页
                ,height : height
                ,cellMinWidth: 100//最小列宽
                ,limits: limits//每页条数的选择项，默认：[10,20,30,50,80,100]。
                ,even : even//隔行变色
                ,limit : limit//每页显示的条数（默认：10）
                ,request: {
                    limitName: 'rows' //每页数据量的参数名，默认：limit
                }
                ,response: {
                    countName: 'total' //规定数据总数的字段名称，默认：count
                    ,dataName: 'rows' //规定数据列表的字段名称，默认：data
                    ,statusCode: 200 //规定成功的状态码，默认：0
                }
                ,text: {
                    none: '暂无相关数据' //默认：无数据。注：该属性为 layui 2.2.5 开始新增
                }
                ,where : where
            });

            //监听表格复选框选择
            /!*table.on('checkbox()', function(obj){
                console.log(obj)
            });*!/

            if(tabOjb.attr("onrowdblclick") && tabOjb.attr("onrowdblclick")!=''){
                //监听行双击事件
                table.on('rowDouble()', function(obj){
                    eval(tabOjb.attr("onrowdblclick")+'('+JSON.stringify(obj.data).replace(/\"/g,"'")+');');
                });
            }

            if(tabOjb.attr("onrowclick") && tabOjb.attr("onrowclick")!=''){
                //监听行单击事件
                table.on('row()', function(obj){
                    /!*console.log(obj.tr) //得到当前行元素对象
                    console.log(obj.data) //得到当前行数据*!/
                    eval(tabOjb.attr("onrowclick")+'('+JSON.stringify(obj.data).replace(/\"/g,"'")+');');
                    //obj.del(); //删除当前行
                    //obj.update(fields) //修改当前行数据
                });
            }

            /!*var $ = layui.$, active = {
                getCheckData: function(){ //获取选中数据
                    var checkStatus = table.checkStatus(_tabId)
                        ,data = checkStatus.data;
                    layer.alert(JSON.stringify(data));
                }
                ,getCheckLength: function(){ //获取选中数目
                    var checkStatus = table.checkStatus(_tabId)
                        ,data = checkStatus.data;
                    layer.msg('选中了：'+ data.length + ' 个');
                }
                ,isAll: function(){ //验证是否全选
                    var checkStatus = table.checkStatus(_tabId);
                    layer.msg(checkStatus.isAll ? '全选': '未全选')
                }
            };

            $('.test-table-operate-btn .layui-btn').on('click', function(){
                var type = $(this).data('type');
                active[type] ? active[type].call(this) : '';
            });*!/

        });
    },

    reload : function(where){//数据重载
        table.reload(_tabId, {
            url: tabOjb.attr("url")//数据地址
            ,where: where //设定异步数据接口的额外参数
            ,page: {curr: 1} //重新从第 1 页开始
        });
    }
}*/

function rowFormat(data,row,callback){
    var cdata={"value" : data,"record" : row};
    return eval(callback+'('+JSON.stringify(cdata).replace(/\"/g,"'")+');');
}


